<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    //  问题: cookie中存储 数组/对象 等数据类型 => 隐式转化为字符串 => 结构就不清晰了?
    // var arr = [1, 2, 3];
    // var obj = { a: 1, b: 2 };

    // console.log(arr.toString());
    // console.log(obj.toString());


    // 如何解决?
    // 有没有方法在保留数组和对象结构的情况下 将数组和对象转化为字符串(JSON字符串 => 有数组或对象结构的字符串)


    console.log(JSON);  // 

    // JSON.stringify()  传入一个数组/对象 =>  在保留数组和对象结构的情况下 将数组和对象转化为字符串(JSON字符串)
    // JSON.parse()   传入JSON字符串 => 解析为对应的数组和对象


    var arr = [1, 2, 3];
    var obj = { a: 1, b: 2 };

    var arrStr = JSON.stringify(arr);
    console.log(1, arrStr);

    var brr = JSON.parse(arrStr);
    console.log(1, brr);


    var objStr = JSON.stringify(obj);
    console.log(1, objStr);

    var obj1 = JSON.parse(objStr);
    console.log(1, obj1);













</script>
<script>
    // 模拟封装 (方便理解)
    // var arr = [1, 2, 3];      //  '[1, 2, 3]'
    // var obj = { a: 1, b: 2 }; // '{ "a": 1, "b": 2 }'

    // var str1 = '[' + arr.join(",") + ']';
    // console.log(1, str1);

    // var list = [];
    // for (var key in obj) {
    //     var val = obj[key];
    //     list.push(`"${key}": ${val}`);
    // }
    // console.log(list);
    // var str2 = '{' + list.join(",") + '}';
    // console.log(2, str2);


    // var res1 = eval('[1, 2, 3]');
    // console.log(res1);
    // var res2 = eval('({ "a": 1, "b": 2 })');
    // console.log(res2);

</script>

</html>